home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / program / gmp202.zip / memory.c < prev    next >
C/C++ Source or Header  |  1996-05-08  |  2KB  |  98 lines

  1. /* Memory allocation routines.
  2.  
  3. Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
  4.  
  5. This file is part of the GNU MP Library.
  6.  
  7. The GNU MP Library is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU Library General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or (at your
  10. option) any later version.
  11.  
  12. The GNU MP Library is distributed in the hope that it will be useful, but
  13. WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  14. or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
  15. License for more details.
  16.  
  17. You should have received a copy of the GNU Library General Public License
  18. along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
  19. the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  20. MA 02111-1307, USA. */
  21.  
  22. #include <stdio.h>
  23.  
  24. #include "gmp.h"
  25. #include "gmp-impl.h"
  26.  
  27. #ifdef __NeXT__
  28. #define static
  29. #endif
  30.  
  31. #if __STDC__
  32. void *    (*_mp_allocate_func) (size_t) = _mp_default_allocate;
  33. void *    (*_mp_reallocate_func) (void *, size_t, size_t)
  34.      = _mp_default_reallocate;
  35. void    (*_mp_free_func) (void *, size_t) = _mp_default_free;
  36. #else
  37. void *    (*_mp_allocate_func) () = _mp_default_allocate;
  38. void *    (*_mp_reallocate_func) () = _mp_default_reallocate;
  39. void    (*_mp_free_func) () = _mp_default_free;
  40. #endif
  41.  
  42. /* Default allocation functions.  In case of failure to allocate/reallocate
  43.    an error message is written to stderr and the program aborts.  */
  44.  
  45. void *
  46. #if __STDC__
  47. _mp_default_allocate (size_t size)
  48. #else
  49. _mp_default_allocate (size)
  50.      size_t size;
  51. #endif
  52. {
  53.   void *ret;
  54.  
  55.   ret = malloc (size);
  56.   if (ret == 0)
  57.     {
  58.       perror ("cannot allocate in gmp");
  59.       abort ();
  60.     }
  61.  
  62.   return ret;
  63. }
  64.  
  65. void *
  66. #if __STDC__
  67. _mp_default_reallocate (void *oldptr, size_t old_size, size_t new_size)
  68. #else
  69. _mp_default_reallocate (oldptr, old_size, new_size)
  70.      void *oldptr;
  71.      size_t old_size;
  72.      size_t new_size;
  73. #endif
  74. {
  75.   void *ret;
  76.  
  77.   ret = realloc (oldptr, new_size);
  78.   if (ret == 0)
  79.     {
  80.       perror ("cannot allocate in gmp");
  81.       abort ();
  82.     }
  83.  
  84.   return ret;
  85. }
  86.  
  87. void
  88. #if __STDC__
  89. _mp_default_free (void *blk_ptr, size_t blk_size)
  90. #else
  91. _mp_default_free (blk_ptr, blk_size)
  92.      void *blk_ptr;
  93.      size_t blk_size;
  94. #endif
  95. {
  96.   free (blk_ptr);
  97. }
  98.